Articles of 进程

prctl(PR_SET_PDEATHSIG)竞争条件

据我所知,实现终止一个subprocess,当其父母死亡的最佳途径是通过prctl(PR_SET_PDEATHSIG) (至less在Linux上): 如何让父进程后,subprocess死亡? 有一个告诫人们提到这个man prctl : 在执行set-user-ID或set-group-ID二进制文件或具有关联function的二进制文件时,该值将被fork(2)和(从Linux 2.4.36 / 2.6.23开始)的子节点清除能力(7))。 这个值保存在execve(2)中。 所以,下面的代码有一个竞争条件: parent.c: #include <unistd.h> int main(int argc, char **argv) { int f = fork(); if (fork() == 0) { execl("./child", "child", NULL, NULL); } return 0; } child.c: #include <sys/prctl.h> #include <signal.h> int main(int argc, char **argv) { prctl(PR_SET_PDEATHSIG, SIGKILL); // ignore error checking […]

检查一个进程是否在Linux上运行的最佳实践?

我用下面的脚本安装了厨师服务器。 我是新来的Linux和我试图学习如何设置厨师服务器。 我运行chef.io提供的命令,脚本成功。 我真的不知道如何检查,或者我该怎么做来检查过程是否正在运行。 有关如何查看进程是否正在运行的Linux的最佳做法是什么? 我能做些什么来找出我需要知道的东西? #!/bin/bash \ echo "Do your provisioning here" \ sudo wget https://packages.chef.io/files/stable/chef-server/12.14.0/el/7/chef-server-core-12.14.0-1.el7.x86_64.rpm \ sudo chmod a+x chef-server-core-12.14.0-1.el7.x86_64.rpm sudo rpm -Uvh ./chef-server-core-12.14.0-1.el7.x86_64.rpm sudo chef-server-ctl reconfigure \ sudo openssl rsa -in private.pem -outform PEM -pubout -out ~/.ssh/chef-server.pem \ sudo chef-server-ctl user-create admin 'admin' 'email' 'password' –filename ~/.ssh/chef-server.pem \ sudo openssl rsa -in […]

在x64 CentOS上构build开罗时遇到问题

我在32位CentOS上做了这么多次,一切顺利。 但现在,在x64 CentOS上,我找不到开罗pixman。 Pixman 0.18.0安装在/ usr / local / lib(我相信是通常的位置)。 configuration为开罗1.8.10找不到它: checking for cairo's image surface backend feature… checking for pixman… no no checking whether cairo's image surface backend feature could be enabled… no (requires pixman-1 >= 0.12.0 http://cairographics.org/releases/) configure: error: mandatory image surface backend feature could not be enabled 我试过设置环境variablespixman_LIBS = / usr / […]

在无限循环过程中删除打开的文件

我怀疑在下面的情况 场景: 一个进程或程序开始于以写模式打开一个文件并进入一个无限循环,例如:while(1)其主体有逻辑写入打开的文件。 问题:如果在进程进入无限循环后不久删除打开或创build的文件,该怎么办?

使用Linux pipe的过程编程模型()

从http://pubs.opengroup.org/onlinepubs/009604599/functions/pipe.html : pipe()函数将创build一个pipe道,并将两个文件描述符分别放入参数fildes [0]和fildes [1]中,这些参数指向pipe道的读写端的打开文件描述。 有一个父母将数据写入其子的例子: int fildes[2]; const int BSIZE = 100; char buf[BSIZE]; ssize_t nbytes; int status; status = pipe(fildes); if (status == -1 ) { /* an error occurred */ … } switch (fork()) { case -1: /* Handle error */ break; case 0: /* Child – reads from pipe */ close(fildes[1]); […]

Android模拟器不会在Linux中启动

我试图启动模拟器arm,但它似乎卡住,从不显示模拟器GUI。 这是我的命令 emulator-arm -avd Android403 -verbose 这是打印输出: emulator: found SDK root at /home/xxxx/development/android-sdk-linux_x86 emulator: Android virtual device file at: /home/xxxx/.android/avd/Android403.ini emulator: virtual device content at /home/xxxx/.android/avd/Android403.avd emulator: virtual device config file: /home/xxxx/.android/avd/Android403.avd/config.ini emulator: using core hw config path: /home/xxxx/.android/avd/Android403.avd/hardware-qemu.ini emulator: Found AVD target API level: 15 emulator: found skin 'WVGA800' in directory: /home/xxxx/development/android-sdk-linux_x86/platforms/android-15/skins emulator: autoconfig: […]

如何在没有ssh的情况下在远程计算机(linux)上执行进程?

如何在不使用ssh的情况下在运行linux的远程机器上执行进程。由于计划机器定期进行pxe启动,所以ssh密钥将被更改,并且使用ssh通过脚本执行进程被排除。 任何想法如何可以做? 谢谢

进程在Linux中终止时文件描述符是否closures?

在Linux(Ubuntu)中有一个打开文件供读取的过程,但不会故意closures它。 当进程终止时,操作系统是否自动closures文件描述符? 我的具体情况是在Rails应用程序,我打开一个二进制文件。 我的Web服务器产生多个Rails进程。 该文件是从每个Rails进程中的单例打开的。 当Rails进程终止时,我需要知道这个二进制文件是否自动closures。

汇编:一个简单的例子,将x86代码转换为x64

虽然我正在学习x64程序集,我试图使添加方法来添加两个整数,并使用程序集返回整数。 我有x86的工作代码,我试图转换为x64 只是我把寄存器的名字改为x64,并且生成的对象文件没有错误,但是当我在C函数中使用它时,我总是得到sum = 0。 我认为参数的位置有问题,我没有find这样的问题的好文件。 section .text global addi addi: push rbp mov rbp, rsp mov rax,[rbp+12] mov rdx,[rbp+8] add rax, rdx pop rbp ret

如何看看正在运行的Linux进程输出^

我的电脑上运行了几个Linux(Ubuntu 10.04)进程。 如果我启动其中一个,我可以在terminal上看到它的详细信息。 我有另一个进程,启动了十几个这样的进程,使他们在后台运行。 但是,我想观察这些进程之一的输出,看看输出是否仍然正常,没有错误信息。 我知道我可以将所有内容都发送到日志消息中,但是这只会占用太多的磁盘空间。 那么,有没有办法在Linux中使用它的进程ID“捕捉”正在运行的进程的输出? 谢谢!