我的问题是我觉得很奇怪。实际上,我列出了给定进程的所有子进程。无符号长不包含有效值
对此,我使用:How to find all child processes?和RC的回答。
但是,我需要一个无符号长出口。 而解决方案给一些字符串基于一个char[]
如果我想得到unsigned long
,我需要修改代码来获取只有数字值。另一种情况将不正确。
所以我把char
作为unsigned long
。然后,scanf
与%ld
标签。
但我越来越废话......
为什么这不起作用?
编辑:代码:
const char *name = "top";
char command[100];
unsigned long parentID; unsigned long processID;
strcpy(command, "ps -C "); strcat(command, name); strcat(command, " --format '%P %p'");
FILE *fp = popen(command, "r");
if (fp == NULL) fprintf(stderr, "Error in reading PID child processes information !\n");
while(fscanf(fp, "%lu %lu", parentID, processID) != EOF) {
printf("PID : %lu Parent : %lu \n", processID, parentID);
}
return processID;
有了,%s
和char[256]
,这项工作!
编辑:Toughts
我想的是两种方法可以做到这一点:
- 首先,使用
unsigned long
代替char[]
。 - 其次,在读取文件后,将
char[]
转换为unsigned long
。但是,我需要逐行读取它。popen
有可能吗?
你有一个错误你的代码。 –
显然你的代码是错误的。由于你没有显示你的代码,你正在做不必要的努力。建议的话:不要隐藏细节。 –
好吧,我加入它! –