- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我读到 syscall(39) 返回当前进程 ID (pid)
那为什么这2个程序输出2个不同的数字呢?
int main() {
long r = syscall(39);
printf("returned %ld\n", r);
return 0;
}
和:
int main() {
long r = getpid();
printf("returned %ld\n", r);
return 0;
}
我在 clion 中运行我的程序,当我更改第一行时,我得到了不同的结果,这真的很奇怪。
运行我得到的答案中的代码(在 macos 中):
returned getpid()=9390 vs. syscall(39)=8340
这真的很奇怪。
在 ubuntu 中,我得到了相同的 pid,这是为什么?
最佳答案
通过号码进行系统调用是不可移植的。
确实,我们看到 39 是 getpid在 Linux 上,但是 getppid (“获取父 pid”)在 macOS 上。
getpid
在 macOS 上是 20。
这就是为什么您在 macOS 上的 getpid()
和 syscall(39)
之间看到不同结果的原因。
请注意,macOS 作为 BSD 内核的衍生版本,与 Linux 没有任何关系。这不可能,因为它是闭源的。
关于C++ getpid() 与 syscall(39)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67437924/
我正在尝试运行这段 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
我是一名优秀的程序员,十分优秀!