Tag: linux

Linux / POSIX等效于Win32的CreateEvent,SetEvent,WaitForSingleObject

我写了一个小类来同步Linux(实际上是Android)和Windows的线程。 这是我的界面的Win32实现: class SyncObjectWin32 : public SyncObject { private: const HANDLE m_hEvent; public: SyncObjectWin32() : m_hEvent( ::CreateEvent( NULL, FALSE, FALSE ) ) { if( NULL == m_hEvent ) throw core::Exception( “sys::SyncObjectWin32::SyncObjectWin32() – Failed to create event.” ); } ~SyncObjectWin32() { ::CloseHandle( m_hEvent ); } void WaitForSignal() { ::WaitForSingleObject( m_hEvent ); } void Signal() { ::SetEvent( […]

如何使用C语言函数识别文件是否是elf文件?

在我的程序中,我想确定文件是否是ELF(可执行和可链接格式)类型。 如何使用C语言函数识别文件是否是elf文件?

如何交替替换大写和小写?

我正在编写一个程序,可以将大写转换为小写,小写转换为大写。 这里有些例子。 abcde – > aBcDe ABCDE – > aBcDe abCdE – > aBcDe 我知道如何在c中制作它而不是shell脚本。 这是c代码。 1 #include 2 #include 3 #include 4 #include 5 6 int main(int args, char* argv[]) 7 { 8 9 if(args != 2) 10 exit(1); 11 char buf[100]; 12 for(int i = 0; i < strlen(argv[1]); i++) 13 { 14 […]

如何在ps -e中显示proccess

你好! 我想制作简单的c程序,它会像ps -e一样工作。 应该显示的唯一列是PID和CMD。 那是我的代码: #include #include #include #include #include int main() { DIR *dir; struct dirent *entry; if ((dir = opendir(“/proc”)) == NULL) perror(“operation error”); else { printf(“PID CMD\n”); while ((entry = readdir(dir)) != NULL) printf(” %s\n”, entry->d_name); closedir(dir); } return 0; } 我的任务是: 1)我如何只显示带数字的文件夹(我不知道如何实现regcomp())? 2)如何靠近PID写入CMD(如果是带数字的文件夹,我不能用路径粘贴(?)字符串)?

array 和array 之间有什么区别?

如果我的二维数组是int数组[4] [5] = {1,2,3,4,5,6,7,8,9,0,11,12,13,14,15,16,17, 18,19,20}; 当我打印一个位置:printf(“%d \ n”,数组[2,0]);. 这是在不给&的情况下打印值的地址。 但如果我这样打印:printf(“%d \ n”,&array [2] [0]); 它是值的打印地址。 正如我已经给它&它打印地址。 但两个地址都不一样。 但如果我打印printf(“,:%d \ n”,数组[3,0]); 它正在打印相同的数组地址[2,0]。 访问数组元素的[2] [0]和[2,0]之间有什么区别。

检查是否错误!= EINTR:这是什么意思?

我发现这段代码多次使用(也是一个类似的代码,它使用的是open()而不是write() )。 int c = write(fd, &v, sizeof(v)); if (c == -1 && errno != EINTR) { perror(“Write to output file”); exit(EXIT_FAILURE); } 为什么检查&& errno != EINTR在这里? 寻找男人的 errno我发现了关于EINTR的以下文字,但即使我访问了man 7 signal ,也没有启发我。 EINTR中断函数调用(POSIX.1); 见信号(7)。

为什么阅读’+’和’ – ‘不适用于Linux?

我有这个代码片段,它将1 + 2 * 3等算术表达式读成整数和字符: int main() { int d, flag = 0; char c; while ((flag = scanf(“%d”, &d)) != EOF) { if (flag == 1) // if integer was read sucessfully { // an integer has been read into variable ‘d’ printf(“%d,”, d); } else // else if it was a character { […]

如何读取系统输出(’ls’)?

我正在用c代码做一些文件IO。 我的文件中有一个特定的模式。 我可以通过shell命令cat abc.txt | grep abc | wc -l来validation这一点 cat abc.txt | grep abc | wc -l cat abc.txt | grep abc | wc -l 。 当我使用System()执行相同的命令时,它给出了正确的输出,但我不知道如何将其输出变为变量并将其与我的c代码本身进行比较。 我试着查看建议使用WEXITSTATUS()手册页。 这实际上返回执行状态而不是输出。 F1 !!

在C中移动Linux上的文件

平台:Debian Wheezy 3.2.0-4-686-pae 编译器:GCC(Debian 4.7.2-5)4.7.2(代码::块) 我想将文件从一个位置移动到另一个位置。 没有什么比移动到不同的驱动器或不同的文件系统更复杂。 我知道执行此操作的“标准”方法是简单地复制文件然后删除原始文件。 但我想要一些方法来保留文件的所有权,模式,最后的访问/修改等。 我假设我将不得不复制文件,然后编辑新文件的所有权,模式等,但我不知道如何做到这一点。

如何在c中屏蔽密码?

在C中,我想显示用户输入的每个字符*(例如,请输入您的密码:*****) 我在寻找,但无法找到解决方案。 我正在研究Ubuntu。 有人知道一个好方法吗?