-
1 votesanswersviews
Linux夏令时通知
当我尝试夏令时时,我试图找到一种方法从系统(Linux)接收通知,但我似乎无法找到类似的东西 . 考虑一个程序坐在 pselect() 上等待多个计时器 fd ,所有计时器都有24小时的间隔,但开始时间不同,由用户定义; “ 07:00 ON , 07:25 OFF ”(例如,如果它是咖啡机) . 因为用户在本地时间提供这些时间并且Linux在UTC上运行,所以每次夏令时都需要重新调整时区调整的计... -
2 votesanswersviews
没有bind()的UDP客户端不接收数据
我从binarytides参考了UDP客户端程序,我能够将UDP数据包发送到UDP服务器,这是我的嵌入式设备,该设备回显UDP消息 . 在这个PC-UDP客户端代码中,它应该得到回显的消息,但我没有得到任何回声 . 所以我在我的PC上运行一个UDP服务器,它监听传入的数据并打印它,我能够看到来自我的嵌入式设备的回显消息 . 当我在代码中的while(1)循环之前添加这些行时,现在我能够看到Echo... -
44 votesanswersviews
具有常数整数除数的高效浮点除法
最近question,是否允许编译器用浮点乘法替换浮点除法,这激励我提出这个问题 . 在严格的要求下,代码转换后的结果应与实际除法运算在位上相同,但是对于二进制IEEE-754算术来说,这对于2的幂的除数是可能的 . 只要除数的倒数可以表示,乘以除数的倒数就可以得到与除数相同的结果 . 例如,乘以 0.5 可以用 2.0 替换除法 . 然后,人们想知道其他除数这样的替换是如何工作的,假设我们允许任... -
395 votesanswersviews
哪个更好的选项用于将整数除以2?
以下哪种技术是将整数除以2的最佳选择,为什么? 技术1: x = x >> 1; 技术2: x = x / 2; 这里 x 是一个整数 . -
-1 votesanswersviews
将数字除以5而不使用除法运算符[duplicate]
可能重复:使用位智能运算符实现除法将数字除以3而不使用*,/, - ,%运算符 我在接受采访时遇到了这个问题 . 我想知道是否有任何可能的方法将数字除以5而不使用除法运算符,并且如果使用按位运算符存在任何可能的解决方案 . 我用重复减法计算出一个直到零逼近 . 号码可以签名和未签名 . 如果没有使用,请建议任何出路, - ,/,*和% . -
341 votesanswersviews
float和double有什么区别?
我已经读过双精度和单精度之间的区别 . 但是,在大多数情况下, float 和 double 似乎是可以互换的,即使用一个或另一个似乎不会影响结果 . 这是真的吗?浮动和双打什么时候可以互换?它们之间有什么区别? -
0 votesanswersviews
Unix中的信号处理
我正在学习Unix中的信号处理,并且很难理解 sigprocmask() 中的 SIG_SETMASK 和 o_set 以及它们做了什么? 据我所知 set 包含要阻止或解除阻塞的信号列表, SIG_BLOCK 阻止列表中的信号, SIG_UNBLOCK 解锁它们 . sigprocmask(SIG_SETMASK,&set,& o_set); -
411 votesanswersviews
为什么我的讲师写的所有C文件都以#开头?
为什么我的讲师写的所有C文件都以#开头? 我正在阅读一些C课程笔记,每个C程序源文件都以程序第一行的单个 # 开头 . 然后有空格,然后跟着 main 函数后跟其他东西 . # 的原因是什么? (现在这是不合时宜的,我不能真的问这个小伙子 . ) 这是一个例子(在收盘结束时有一个额外的行 } ) # #include <stdio.h> int main() { printf(... -
2 votesanswersviews
C:字节复制无符号字符值
void callback(const unsigned char* data, int len) { unsigned char copydatahere; } data是指向const的指针,在外部库中分配 . len是一个数据大小,猜测它是sizeof(unsigned char)* N. 我如何将 copydatahere 分配给 len 的大小并复制 data 后面的整个内存,包括... -
0 votesanswersviews
将指针作为参数传递时的不正常结果
我已经实现了一个hashmap . struct hashmap_elmnts {char * key;int in_use;无效*数据; //包含下面定义的struct ussd的malloc的地址}; struct hashmap_map { int table_sizel; int size; ... -
4 votesanswersviews
为什么编译器看到char *和printf 's conversion specifier “s” when the char * is typedef' d之间的不匹配并通过结构访问?
为什么编译器会在下面的printf中抱怨参数类型“char”和转换说明符“s”不匹配? #include <stdio.h> #include <stdlib.h> typedef char * STR; // causes problems in printf below int main(void) { struct MyStruct { ... -
185 votesanswersviews
父母退出后如何让孩子过程死亡?
假设我有一个只产生一个子进程的进程 . 现在,当父进程因任何原因(正常或异常,通过kill,^ C,断言失败或其他任何原因)退出时,我希望子进程死掉 . 怎么做到这一点? stackoverflow上的一些类似问题: (早先问过)How can I cause a child process to exit when the parent does? (稍后问)Are child pro... -
0 votesanswersviews
RLE算法有缺陷吗?
关于删除字符串中的重复字符,我正在查看最近的Code Golf . 我仔细考虑过它,并认为RLE算法会解决它,事实上,我确实相信会解决重复问题,我在C中写了一个实现,看看我能走多远 char *rle(const char *src){ char *p=(char *)src; char *q=(char *)src+1; char *rle_enc=NULL, *tmp_... -
0 votesanswersviews
fork多个子进程来运行其他程序
我想从父程序(称为守护进程)开始使用args测试程序的5个子进程(所有5个并行,不等待完成) . 我有以下代码: #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc,char* argv[]){ //missing irrelevant part w... -
1 votesanswersviews
C - 父进程无限期地等待运行authopen的分叉子进程
我试图让我的父进程等待运行 authopen 的子fork,以编写具有提升权限的文件 . 父级中的 wait/waitpid 无限期挂起以使子进程终止 . 我相信这是因为 authopen 在程序退出之前不会释放文件 . authopen 写入的文件在程序的生命周期内被锁定,因此无法读取该文件,无法使用其他 authopen 进程写入该文件,并打开该文件 . 在程序退出之前,vim不显示文件的内容... -
-1 votesanswersviews
C - dup2()没有执行
这是我的第一个问题,所以如果我忽略任何重要的事情我会道歉 . 所以我一直致力于通过分叉处理管道的任务 . 我的代码非常混乱,充斥着printf语句,所以我看到发生了什么 . 我在网上浏览了一下,我想我知道如何处理管道,但我遇到的问题是我的代码跳过除了inFD和outFD之外的任何文件描述符上的dup2() . 这是我的功能代码 . 另外,根据我的理解,我的老师制作了一个名为CHK的宏来检查错误 .... -
4 votesanswersviews
C中的套接字编程
好吧,所以当我使用C进行网络编程时,我几乎没有绿色 . 我正在使用here的示例文件 基本上我只是在侦听给定端口上的传入UDP数据包,然后我想以相同的方式发送一些数据 . 以下是相关部分 . 此时,套接字已设置并绑定到选择的端口并等待传入的数据包: printf("GSProxy: waiting to recvfrom...\n"); addr_len = (socklen... -
107 votesanswersviews
并发调用同一套接字上的send / recv是否有效?
我们可以从一个线程调用send并在同一个套接字上从另一个调用recv吗? 我们可以从同一个套接字上的不同线程并行调用多个发送吗? 我知道一个好的设计应该避免这种情况,但我不清楚这些系统API将如何表现 . 我也找不到相同的好文档 . 方向上的任何指针都会有所帮助 . -
2 votesanswersviews
多线程以从多个UDP客户端接收数据
我想从不同的客户端接收数据(客户端数量是固定的,比如10),并且每个客户端在5个不同的预定义端口上发送数据,这些端口不会改变 . (例如,客户端1端口5000,5001,5002等) . 所有客户端都可以同时发送数据 . (以上都是固定的) 在TCP中说,我可以为我们接受的每个连接创建多个线程,如下所示 . UDP is connectionless,So how can we create... -
0 votesanswersviews
我可以为同一台服务器创建2个套接字吗?
我可以在同一客户端计算机上创建2个UDP套接字(但将在2个不同的线程中使用)来连接到服务器吗?一个线程将数据报发送到另一个线程,另一个线程从服务器接收数据报 . 这些是正确的步骤: 为服务器的给定地址和UDP端口创建一个sockaddr_in . 创建一个套接字并将其连接到服务器的sockaddr_in . 这是发送套接字 . 创建另一个套接字,分配端口并将端口号发送到服务器 . ... -
0 votesanswersviews
在C中使用数据报套接字接收
由于UDP是无连接的,客户端上的单个UDP套接字/端口是否可以接收来自不同服务器(连接)的数据包?或者它是否需要从每个服务器接收单独的连接? 我正在设计一个客户端,它使用UDP从5台服务器接收数据包 . 这是否要求我在客户端的不同端口上创建5个套接字?或者我可以在客户端使用单个端口/套接字接收数据吗? 任何帮助,将不胜感激 . 谢谢! -
1 votesanswersviews
从macOS上的单个网络接口接收多播UDP数据包
这是一个macOS问题 . 我正在尝试设置一个UDP套接字,它接收发送到多播地址的SSDP消息,即UDP数据包 . 我想限制从单个网络接口接收这些数据包 . 我试过了 int fd = socket(AF_INET, SOCK_DGRAM, 0); char* itf = "en0"; int res = setsockopt(fd, SOL_SOCKET, IP_RECV... -
0 votesanswersviews
c - udp socket上的多个变量
我必须通过udp套接字发送多个变量类型:int数组和char . 我想在同一个udp数据包上发送它 . 什么是标准解决方案?将所有内容转换为字节或类似内容? 我正在使用:sendto(int sockfd,const void * buf,size_t len,int flags,const struct sockaddr * dest_addr,socklen_t addrlen); 我的代码是... -
0 votesanswersviews
定义结构的问题
我在C中做了一个小应用程序,我想定义一个结构 . 我这样做了: typedef struct { ITEM element[TAILLE_TAMPON]; sem_t mutex, attendreVide, attendrePlein; int ptEntree, ptSortie; } TAMPON; 但是当我使用ITEM构建我的项目时出现错误是否是由于包含问题? ... -
66 votesanswersviews
如何制作进程守护进程
我试图理解如何使我的程序成为守护进程 . 所以我遇到的一些事情通常,程序执行以下步骤来成为守护进程: 致电 fork( ) . 在父级中,调用 exit( ) . 这可确保原始父级(守护程序's grandparent) is satisfied that its child terminated, that the daemon'的父级不再运行,并且守护程序不是进程组组长 . 最后一... -
15 votesanswersviews
在UNIX中处理信号的区别
使用 sigprocmask() 屏蔽信号和使用 signal(<signal>, SIG_IGN) 忽略信号之间是否存在差异? -
1 votesanswersviews
将SIGCONT和SIGHUP的顺序发送给孤立的linux进程组
APUE说 由于进程组在进行父节点时是孤立的,因此POSIX.1要求将新的孤立进程组中的每个进程(如我们的子进程)发送挂起信号(SIGHUP),然后发送继续信号(SIGCONT) ) #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> #in... -
0 votesanswersviews
终端与所有孩子一起失败,即使是SIGKILLed,但正常的过程不会这样做
我希望在我的程序中具有与bash(终端)在使用SIGKILL杀死它时所做的相同的效果 . 我们知道我们无法在我们的程序中处理SIGKILL,所以当我杀死我的程序时,它的子程序被分配给init进程,没有办法处理它,这样我就可以杀死所有子进程然后杀死父进程本身 . 虽然我们杀死终端时,即使我们通过SIGKILL杀死我们的终端,所有通过它创建的进程也会被杀死 . 为此,我做了一些研究,发现了以下帖子:[... -
0 votesanswersviews
优雅地在控制炮弹被杀死时终止进程
我有一个命令行应用程序 . 我面临的问题是,有时该应用程序的用户直接关闭运行我们的应用程序的终端,也使用以下命令: kill -9 pid_of_parent_console 在上述情况下,我们的应用程序应该通过执行所有必要的清理来优雅地关闭 . 为此,我编写了一个处理SIGHUP信号的信号处理程序,因为当控制进程的终端退出时,它将SIGHUP发送到在其下运行的进程,我们已经处理这些进程以优雅地... -
3 votesanswersviews
在Linux中查找会话负责人或控制进程组TTY的方法有哪些?
这不是特定于语言的问题,尽管我现在正在使用golang . 我正在编写一个命令行程序,我想找到该程序的真正UID . (通过realUID,我的意思是,如果用户做了sudo,有效的uid会改变,但真正的uid会与用户的相同) . ) 我已经读过,找到控制tty的所有者是找到它的一种方法,在linux上,我们可以使用“tty”命令,它将返回连接到STDINPUT的终端的文件名 . 检查其所有权...