Tag: 执行

复制内存中的函数并执行它

我想知道在C中如何将一个函数的内容复制到memroy并执行它? 我正在尝试做这样的事情: typedef void(*FUN)(int *); char * myNewFunc; char *allocExecutablePages (int pages) { template = (char *) valloc (getpagesize () * pages); if (mprotect (template, getpagesize (), PROT_READ|PROT_EXEC|PROT_WRITE) == -1) { perror (“mprotect”); } } void f1 (int *v) { *v = 10; } // allocate enough spcae but how much ?? myNewFunc = allocExecutablePages(…) […]

popen()替代方案

我的问题是这个问题的延伸: popen创造了一个额外的过程 动机: 1)我的程序需要创建一个在文件上tail的子项。 我需要逐行处理输出。 这就是为什么我使用popen因为它返回FILE *。 我可以轻松获取单行,执行我需要做的操作并打印它。 popen的一个问题是你没有得到孩子的pid(在我的情况下是tail命令)。 2)我的程序不应该在孩子完成之前退出。 所以我需要wait ; 但没有pid,我不能这样做。 我怎样才能实现这两个目标? 一个可能的(kludge)解决方案:执行execvp(“tail -f file> tmpfile”)并继续读取tmpfile。 不过,我不确定这个解决方案有多好。