- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
/* In alarm.c, the first function, ding, simulates an alarm clock. */
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
static int alarm_fired = 0;
void ding(int sig)
{
alarm_fired = 1;
}
/* In main, we tell the child process to wait for five seconds
before sending a SIGALRM signal to its parent. */
int main()
{
pid_t pid;
printf("alarm application starting\n");
pid = fork();
switch(pid) {
case -1:
/* Failure */
perror("fork failed");
exit(1);
case 0:
/* child */
sleep(5);
printf("getppid: %d\n", getppid()); // Question: why this line produces the same value as getpid?
kill(getppid(), SIGALRM);
exit(0);
}
/* The parent process arranges to catch SIGALRM with a call to signal
and then waits for the inevitable. */
printf("waiting for alarm to go off\n");
(void) signal(SIGALRM, ding);
printf("pid: %d\n", getpid()); // Question: why this line produces the same value as getppid?
pause();
if (alarm_fired)
printf("Ding!\n");
printf("done\n");
exit(0);
}
我已经在 Ubuntu 10.04 LTS 下运行了上面的代码
> user@ubuntu:~/Documents/./alarm
> alarm application starting
> waiting for alarm to go off
> pid: 3055
> getppid: 3055
> Ding!
> done
最佳答案
嗯,因为在 child 中您调用 getppid
返回 child 的 parent-pid。在 parent 中调用 getpid
返回parent's (own) pid。
从子级调用getppid
(获取父级 pid)与从父级调用 getpid
是一样的。
所以值是一样的。这不是直截了当和意料之中的吗?
关于c - 为什么 getppid 和 getpid 返回相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6577529/
我正在尝试运行这段 hello world 代码: #include #include #include #include char string1[] = "\n Hello"; char
在 Pthreads 手册页中提到 Calls to getpid(2) return a different value in each thread 在 LinuxThreads 部分。 我创建了
我有一个应用程序,我需要编写一个新的 getpid 函数来替换原来的操作系统。实现类似于: pid_t getpid(void) { if (gi_PID != -1) {
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
我四处搜索,但无法找到我要找的东西。我知道 getpid() 返回调用进程的进程 ID,getppid() 返回调用进程父进程的进程 ID。但是有没有函数可以获取程序的进程ID呢?或者这就是上述两者之
我尝试将 getpid 系统调用的结果打印到标准输出。 这是我的汇编代码: ;getpid.asm [SECTION .txt] global _start _start: xor eax,
尝试在 linux-mint 上运行 c++ prog 时出现此错误,$制作 g++ -c -O3 common.cc common.cc: In function ‘float getCurr
我读到 syscall(39) 返回当前进程 ID (pid) 那为什么这2个程序输出2个不同的数字呢? int main() { long r = syscall(39); prin
我最近开始了一门关于操作系统的类(class),我的一项作业涉及从调用系统库的代码中跟踪系统调用 getpid(),通过它在操作系统中的实现,返回到系统库和用户程序。我真的很迷茫,不知道从哪里开始。我
我是c语言和Linux新手。我有一个与 fork()、getpid() 和 exec() 函数相关的问题。我使用 fork() 调用编写了一个 C 程序,我的程序代码如下”代码: #include
这个问题很快:)。我知道 srand() 用于为随机数生成器提供种子,以防止生成相同的随机数序列。同样,我知道 getpid()“应返回调用进程的进程 ID。” ( http://pubs.openg
#include #include #include #include int main(int argc, char **argv) { printf ("%d", getpid()
当我运行下面的代码时 #include #include //int i=0; int main(){ int id ; id = fork() ; printf("id value : %d\n
我在程序中多次调用getpid()(为了测试系统调用的效率),但是当我使用strace要获取跟踪,只捕获一个 getpid() 调用。 代码很简单: #include #include #incl
我刚刚安装了 Android Studio,我从 SDK 管理器安装了推荐的包,现在我正在尝试构建一个示例应用程序。我收到此错误消息: Failed to complete Gradle execut
新来的。我正在尝试制作一个 c++ 程序,它将从 python 创建的命名管道中读取。我的问题是,python 创建的命名管道使用 os.getpid() 作为管道名称的一部分。当我尝试从 C++ 调
根据手册页 getpid() returns the process ID (PID) of the calling process. 在下面的代码中,为什么 parent pid 返回的值与 get
如果我有如下字符串: char* exampleString = "test$$"; 假设 getpid() 返回 1587。 如何用 getpid() 的结果替换字符串中的 $$,使结果成为字符串
假设您处于单线程进程中,并且相关信号未被阻塞或忽略,是否可以保证: kill(getpid(), sig); 是否会导致在执行下一行代码之前传递信号? 特别是,如果信号是一个没有处理程序的信号,并且整
/* In alarm.c, the first function, ding, simulates an alarm clock. */ #include #include #include
我是一名优秀的程序员,十分优秀!