我的問題是我覺得很奇怪。實際上,我列出了給定進程的所有子進程。無符號長不包含有效值
對此,我使用: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
有可能嗎?
你有一個錯誤你的代碼。 –
顯然你的代碼是錯誤的。由於你沒有顯示你的代碼,你正在做不必要的努力。建議的話:不要隱藏細節。 –
好吧,我加入它! –