Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <unistd.h>
- int getppidbypid(int pid)
- {
- int p, pp;
- FILE *F;
- char buf[256];
- sprintf(buf, "ps -o pid,ppid -p %d", pid);
- F = popen(buf, "r");
- if (!F) {
- /* Can not run ps */
- return -1;
- }
- while (!feof(F)) {
- if (!fgets(buf, sizeof(buf), F)) {
- pclose(F);
- return -1;
- }
- if (sscanf(buf, "%d %d", &p, &pp) > 0) {
- if (p == pid) {
- pclose(F);
- return pp;
- }
- }
- }
- pclose(F);
- return -1; /* Not found */
- }
- int main(int argc, char *argv[])
- {
- int i;
- int p;
- for (i = 1; i < argc; i++) {
- p = atoi(argv[i]);
- printf("[%d] -> [%d]\n", getppidbypid(p), p);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement