#include<stdio.h>
#include <stdlib.h>
#include<fcntl.h>
main()
{
int fd, retval, i;
int ptr;
char buff[1000];
system("ps -A --no-headers -o pid>pid.txt");
fd = open("pid.txt", O_RDONLY);
retval = read(fd, buff, 1000);
buff[retval] = '\0';
int count= get_count(buff);
ptr = get_each_pid(buff, count);
for(i=0; i< count; i++)
printf("%d \n", *(ptr+i));
}
int get_each_pid(char *pids, int count)
{
int val, i, j=0, k=0,l=0;
char temp[10];
int *p= (void *)malloc(count);
for(i=0; pids[i]!='\0'; i++)
{
if(pids[i]!=' ')
{
temp[j]= pids[i];
j++;
if(pids[i+1]=='\n')
{
temp[j]='\0';
val=atoi(temp);
// printf("int: %d \n", val);
for(k=l; k<=l; k++)
*(p+k)=val;
i++;
l++;
j=0;
}
}
}
return p;
}
int get_count(char *str)
{
int i, count=0;
for(i=0; str[i]!='\0'; i++)
{
if(str[i]=='\n')
count++;
}
return count;
}
在这里,我希望获得系统中的所有进程ID,并希望逐个打开。为了实现我需要将所有pid存储在txt文件中,将每个字符串转换为整数并将其存储在一个数组中:如果正常,请在此处输入代码。问题是我想将起始地址返回给main函数。有谁可以请检查这个。任何帮助将非常感激。
答案 0 :(得分:0)
您应该将get_each_pid函数原型更改为:
int* get_each_pid(char *pids, int count)
因为你正在返回一个指针