2012-03-11 3 views
2

Я программирую в Linux с помощью C/C++. У меня проблема, я пытаюсь найти функцию или что-то еще, чтобы получить количество дочерних процессов в родительском процессе.Число дочерних процессов в родительском процессе C/C++, LINUX

Помогите мне пожалуйста Спасибо

+0

Не могли ли родители подсчитать их по мере их раздвоения? –

ответ

1

Я не уверен, если POSIX определяет функцию для этого, но вы всегда можете рассчитывать их в глобальную переменную самостоятельно, просто добавьте 1 после каждой вилки на родителя, и установить это 0 на ребенке ..

+0

невозможно использовать глобальную переменную, помните, что ребенок клонирует весь код, а глобальная переменная становится бесполезной. –

+2

@VaheMusinyan: Вот почему он сказал: «И установите его на 0 на ребенка». –

+0

Все еще не звонит в колокол. Если вы установите значение 0, это не повлияет на глобальную переменную. Может ли кто-нибудь дать мне пример кода? –

1
int globalVariable = 0; 

main() { 
    pid_t pID = fork(); 
    if (pID == 0) { //child 
    globalVariable = 0; 
    cout << "Child Process" << end; 
    } 
    else if (pID < 0) { //failed to fork 
    cerr << "Failed to fork" << endl; 
    exit(1); 
    // Throw exception 
    } 
    else { // parent 
    cout << "Parent Process:"; 
    ++globalVariable; 
    } 
}     
0

Вы можете использовать команду «пс» с --ppid возможности перечислить все дочерние процессы, а затем подсчитать их, используя туалет -l

пса - ppid | wc -l

1

Используйте procfs: подсчитайте количество каталогов в /proc/[mypid]/task и у вас есть количество дочерних процессов.

Для получения дополнительной информации см. proc(5).

Смежные вопросы