Articles of 进程

mmap系统调用返回-14(-EFAULT ??)

我正在使用系统调用来实现mmap函数(由于某些原因,我正在手动实现mmap)。 但我得到的返回值-14(-EFAULT,我检查了GDB)whith这个消息: WARN Nar::Mmap: Memory allocation failed. 这里是function: void *Mmap(void *Address, size_t Length, int Prot, int Flags, int Fd, off_t Offset) { MmapArgument ma; ma.Address = (unsigned long)Address; ma.Length = (unsigned long)Length; ma.Prot = (unsigned long)Prot; ma.Flags = (unsigned long)Flags; ma.Fd = (unsigned long)Fd; ma.Offset = (unsigned long)Offset; void *ptr = (void *)CallSystem(SysMmap, (uint64_t)&ma, Unused, […]

如何区分subprocess?

说我叉N个孩子。 我想在1和2,2和3,4和5之间创buildpipe道,等等。 所以我需要一些方法来弄清楚哪个孩子是哪个。 下面的代码是我现在有。 我只是需要一些方法来告诉那个孩子号码n,是孩子号码n。 int fd[5][2]; int i; for(i=0; i<5; i++) { pipe(fd[i]); } int pid = fork(); if(pid == 0) { }

通过pipe道进行进程间通信

众所周知,在Linux进程间通信过程中,进程之间通过名为“Pipe”的特殊文件相互通信。 还知道对该文件执行的操作是通过一个进程写入并通过一个进程读取的,以便相互通信。 现在的问题是: 这些写入和读取操作是否在通信期间并行执行(操作是并行执行的)? 如果不是, 当通信过程中的一个进程进入睡眠状态时会发生什么? 它是否为第二个进程首先执行写入操作,或者直接进入睡眠而不执行任何写入和读取操作?

杀死父进程并在fork()之后离开subprocess的目的是什么?

我正在阅读Nginx的开源,我不知道为什么有人会杀死父进程,并让subprocess处理程序的其余部分 ? 为什么不让父进程来处理呢? 非常感激你的帮助。 我使用Eclipse CDT来debugging程序,这导致我的debugging进入死胡同,因为它继续debugging父进程,而不是subprocess(实际上处理程序的其余部分)。 这是代码片段: ngx_int_t ngx_daemon(ngx_log_t *log) { int fd; switch (fork()) { case -1: ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "fork() failed"); return NGX_ERROR; case 0: break; default: exit(0); } /* Do stuff*/ } 编辑:我明白,程序是deamonizing程序,但我仍然想知道为什么我们应该在一开始呢?

C函数调用为线程 – Linux用户程序

我正在写C语言的Linux守护进程,它通过SPI接口(ioctl)从ADC获取值。 SPI(spidev – userland)似乎有点不稳定,随机冻结守护进程。 我需要对获取值的函数的调用有更好的控制,而且我正在考虑把它作为一个线程,我可以等待完成并获得返回值,如果超时,假设它冻结并且终止它没有这个新线程取下守护进程本身。 然后,我可以在重新启动之前应用重置ADC等措施。 这可能吗? 我想要实现的伪示例: (函数int get_adc_value(int adc_channel,float * value) ) pid = thread(get_adc_value(1,&value); //使线程调用函数 wait_until_finish(pid,timeout); //等待函数完成/超时 如果(超时)杀死PID,重新开始//如果线程在给定的时间没有返回,杀死它(它被冻结) 否则,如果返回值理智,继续//如果成功,处理返回variables值并继续 感谢您对此事的任何意见,例如高度赞赏!

如何重命名Linux上的进程?

我正在使用Python,它是值得的,但会接受任何适用语言的答案。 我已经尝试写入/proc/$pid/cmdline ,但这是一个只读文件。 我试过把一个新的string分配给sys.argv[0] ,但是没有明显的影响。 还有其他的可能吗? 我的程序正在通过os.system执行进程(相当于system(3) ),因此使用额外的产卵过程的基于NIX的通用解决scheme将会很好。

Windows 7中的进程和线程优先级

我有一个简单的“培训”项目,必须在Windows中显示优先级机制。 这是我的C ++代码: #include <stdio.h> #include <windows.h> DWORD WINAPI Thread1(LPVOID); int stop; int sleep = 10000; struct params { int num; bool* runflg; }; long long counters[7] = {0,0,0,0,0,0,0}; int priority[7] = {THREAD_PRIORITY_IDLE, THREAD_PRIORITY_LOWEST, THREAD_PRIORITY_BELOW_NORMAL, THREAD_PRIORITY_NORMAL, THREAD_PRIORITY_ABOVE_NORMAL, THREAD_PRIORITY_HIGHEST, THREAD_PRIORITY_TIME_CRITICAL}; int main(int argc, char* argv[]) { int thrds; if (argc < 2) stop = 5; else […]

如何在退出我的应用程序时终止python.exe * 32进程?

我已经在Windows 7下使用wxpython GUI编写了一个python(2.7)应用程序。当我运行该应用程序时,我看到一个python.exe*32进程在任务pipe理器中启动。 当我退出应用程序(使用wxpython的Window.Close()方法closuresGUI窗口)时, python.exe*32进程仍然存在。 当我再次运行应用程序时,第二个python.exe * 32进程启动,并继续。 每个python.exe*32进程需要大约180 MB的内存,并减慢计算机。 我这样开始我的应用程序: if __name__ == "__main__": app = wx.App(False) frame = MainWindow("MyApp") frame.Show() app.MainLoop() 当我退出我的应用程序时,如何使python.exe*32进程终止?

如何让Java运行可执行应用程序?

码: ProcessBuilder pb = new ProcessBuilder("mvn"); Process p = pb.start(); 输出: java.io.IOException: Cannot run program "mvn": CreateProcess error=2, The system cannot find the file specified at java.lang.ProcessBuilder.start(Unknown Source) at com.littleHelper.app.ButtonDemo.actionPerformed(ButtonDemo.java:47) 但: ProcessBuilder pb = new ProcessBuilder("mvn.bat"); Process p = pb.start(); 运行完美。 但是在cmd中都运行良好! 如何使java运行像cmd?

从java程序closuresIE进程

我写了一个程序来打开IE使用 Process process=Runtime.getRuntime().exec(); 现在我想从我的Swing GUI中单击一个button来closuresIE的这个实例。 我尝试了process.destroy()但它不工作。 我也读了process.waitfor(),但只有在IEclosures后才能调用,即我手动closuresIE。 另外如果我使用 Runtime.getRuntime().exec("taskkill /F /IM iexplore.exe"); 它杀死了IE运行的所有实例。 我只想closures与我上面的过程相关的IE浏览器。 请build议我该怎么做?