Я пытаюсь написать функцию, которая будет убивать экземпляры от имени программы в строкеftell всегда возвращает -1
unsigned int kill_all_program_instances(const char * program_name){
int res;
char buf[1024];
string first;
string second;
int lSize, pid , pos;
string command="pidof ";
FILE *fd;
memset(buf,'\0',sizeof(buf));
fd=popen((command+program_name).c_str(),"r");
unsigned int mypid = getpid();
if(fd != NULL){
fseek (fd , 0 , SEEK_END);
lSize = ftell(fd);
rewind (fd);
if (lSize <= 0)
{
printf("lsize is %d\n",lSize);
pclose(fd);
return 0;
}
.....
}
Это только начало функции, но я всегда получаю -1 для lSize. Я побежал
pidof chromium-browse
и получил
26487 19353 16993 11504 10960 10880 10868 10829 10825 10805 8607 8263 8154 8089 7764 3965 3950
Однако, когда я бегу
kill_all_program_instances('chromium-browse')
Я все еще получаю -1 для lSize.
Любая идея не в порядке с моим кодом?
Благодаря
Пробовали ли вы смотреть на 'errno' и' strerror() '? – Vlad
Можете ли вы проверить, есть ли ошибка с 'errno' и т. Д.? – Djon
Я буду в секундах –