Tag: linux

system()调用在C中返回错误的值

即使通过system()调用成功运行命令后,我得到-1返回值。 有关更多信息,请参阅以下C代码。 system(“ping -w 3 -c 1 -q -I 63.254.203.24 63.254.203.26 >/dev/null”); 然后我检查这个system()调用的返回值,即使它是可ping的但我发现-1作为返回值。

从C代码获取ALSA峰值

我正在尝试使用ALSA和C检索当前音频峰值。我希望将此值设置为介于0.0和1.0(或者可能为0和100)之间的标量。 在Windows上我使用IAudioMeterInformation ,它允许我构建一个非常基本的VU表。 编辑:我指的是仅检测扬声器输出,而不是麦克风。

在c中使用popen运行多个命令

我使用C创建一个程序,该程序在需要运行多个命令的linux环境中运行 sudo -s LS PWD (假设sudo -s下的命令是需要超级用户才能运行的命令) 现在,我需要做的是获取这些命令的所有输出以供进一步处理。 这是代码 int executeCommand(char *command, char *result) { /*This function runs a command./*/ /*The return value is the output of command*/ int nSuccess = -1; FILE * fp = NULL; char buffer[1035]; if (command == NULL) render(“Command is null”); if (result == NULL) render(“result is null”); if (command!=NULL […]

在C中显示正在运行的进程列表

你能建议我检查当前正在运行的进程的系统调用吗? (我必须写一个像顶部的C函数) 我试图读取proc/文件夹,但在我的情况下并不好。

为什么中断处理程序(ISR)无法入睡?

我很困惑,为什么中断处理程序无法入睡? 我对同一个问题有2次意见: – 中断处理程序不可调度? 因为它没有task_struct。 如果处理程序hibernate,则系统可能会挂起,因为系统时钟中断被屏蔽并且无法调度hibernate进程。 中断处理程序是否可以安排, 但同时优先级较低的系统时钟中断 被这些优先级较高的中断屏蔽 , 他们不能安排? 请给我一个很好的例子。

用于Linux的进程(Ubuntu)

这是我想要做的: 编写一个带有整数命令行参数n的C程序,生成n个进程,每个进程生成-100到100之间的随机数,然后计算并打印出这些随机数的总和。 每个进程都需要打印出它生成的随机数。 这是我到目前为止: #include #include #include #include #include #include #include int main(int argc, char *argv[]){ int command,processCheck; // processCheck: to check if fork was successful or not and to char * strNumProcess = NULL;// check the status of child process while((command = getopt(argc, argv, “n:”))!=-1){ if(command == ‘n’){ strNumProcess = optarg; break; } } […]

umount不适用于C中的设备(但它适用于终端)

我试图以编程方式卸载USB驱动器(设备/dev/sdb1 )。 如果我在Linux终端上运行sudo umount /dev/sdb1就行了。 但是,如果我gcc编译并运行以下C片段作为sudo ,则错误为ERRNO 22 = EINVAL (Invalid argument) 。 这是代码: #include “unistd.h” #include “sys/mount.h” #include “errno.h” int main() { int r = umount2(“/dev/sdb1”, MNT_FORCE); if (r != 0) return errno; else return 0; } 这同样适用于umount() 。 MNT_FORCE不会改变任何东西。 如果我通过挂载点而不是设备,该函数可以工作,但文档说它适用于两者 。 我发现这种方式比读取/etc/mtab更可靠,以获取挂载点并使用它。 function:int umount2(const char *文件,int标志) 初步:| MT-Safe | AS-Safe | AC-Safe | […]

在项目中使用libfuse,没有root访问权限(用于安装)? FTP安装和inotify / kqueue / FSEvents

我希望我的应用程序能够显示远程FTP(或SFTP等)位置的目录列表。 当远程目录树中的文件/目录发生更改时,应用程序应使用相关更改更新其视图。 因为遍历整个树是缓慢而浪费的,所以我想使用FSEvents(Linux上的inotify / kqueues)的内容,但显然这些库是基于文件系统的,并且与FTP服务器的连接不一样作为挂载的文件系统。 为了使这些库工作,我需要在本地机器上实际安装由FTP / SFTP支持的文件系统,然后将FSEventStream(或kqueue等)附加到此本地安装。 我知道FUSE可以做到这一点,但有没有办法我可以使用FUSE而无需用户首先安装它? 我的意思是,我可以将它与我的(Mac)应用程序捆绑在一起并创建挂载,而无需让用户完成实际运行安装程序包的过程,将libfuse和内核模块复制到系统中吗? 是否假设/dev/fuse存在,或者它是否可以存在于我的应用程序目录中的/dev/ path之外? Nice Mac应用程序只需拖放就可以安装,如果可能的话我想保留这种方式。 我不清楚是否可以直接使用libfuse(如果文件包含在应用程序中),而不是在系统路径中安装它。 或者,是否有人有任何其他建议来监控FTP上的更改,而不进行轮询?

pthread_kill没有杀死线程C linux

我正在制作一个小项目,将其纳入更大的项目。 它的作用基本上是跟踪通过将它们添加到主结构而创建的线程,主结构跟踪线程的作用(主要function)和pthread_t id。 另一个struct跟踪要传递给函数的数据以及pthread_t id存储在threads []中的元素号。 它有点micky鼠标,它跳了一下但是除了什么时候杀死线程它都有效。 我得到没有段错误和没有错误,程序完成得很好,但是当调用pthread_kill()时,线程不会被杀死(函数返回0表示没有错误并且它有效)尽管线程继续运行直到主应用程序返回。

拦截Linux上的文件操作

我正在开发一个用于渲染视觉效果和动画的云平台。 我们接受各种格式的场景描述渲染它们,并将图像输出返回给用户。 处理后端是Linux。 有时我们会收到在Windows上生成的场景描述,因此我们得到的路径看起来像’C:\ path \ to \ file.mb’。 我编写了一个Linux共享库来拦截各种文件系统调用,并改变Linux可以理解的路径’/ C / path / to / file’。 我使用LD_PRELOAD机制在“真实”函数之前插入我的函数,它工作得很好……除非它没有。 例如这个命令: LD_PRELOAD = / home / robert / path_fix.so渲染-s 1 -e 1 C:\ path \ to \ test_scene_03_vray.ma 找不到test_scene_03_vray.ma。 这也行不通: LD_PRELOAD = / home / robert / path_fix.so echo test> C:\ path \ to \ test.txt 我一直在使用ltrace来确定哪些函数是通过引用路径名来调用的,但这些示例并未显示在我的跟踪中: […]