小编kai*_*kai的帖子

softirq和tasklet在哪个上下文中?

我知道有进程上下文和中断上下文但我不明白在执行softirq或tasklet时,它在哪个上下文中运行.

我看到有些人使用术语"下半部分",如果有这样的术语,与其他人相比有什么不同.

softirq和tasklet的另一个问题是为什么在执行期间不允许睡眠?

谁能帮我识别这些问题,谢谢!!

linux interrupt linux-kernel softirq

15
推荐指数
3
解决办法
1万
查看次数

pid为新线程

我有一个关于pthread_create()创建的新线程的快速问题:

当我打印主线程和子线程的pid(来自getpid()),它们是相同的,而当我使用htop linux实用程序来显示pid时,它们是不同的.任何人都可以向我解释一下吗?谢谢!!

kai@kai-T420s:~/LPI$ ./pthr_create
--------------------------------------
main thread: pid: 4845, ppid: 3335
child thread: pid: 4845, ppid: 3335
Run Code Online (Sandbox Code Playgroud)

htop显示: 显示进程列表的htop应用程序的屏幕截图.

c linux pthreads

15
推荐指数
1
解决办法
1万
查看次数

connect()是否阻止TCP套接字?

嗨,我正在阅读TLPI(Linux编程接口),我有一个关于connect()的问题.

据我所知,如果listen()的挂起连接数没有达到"backlog",connect()将立即返回.否则它会阻止.(根据图56-2)

但对于TCP套接字,它将一直阻塞,直到调用服务器端的accept()(根据图61-5).

我对么?因为我在示例代码(p.1265)中看到它,它调用listen()来侦听特定端口,然后在调用accept()之前调用connect()到该端口.

所以在这种情况下connect()会永远阻塞,不是吗?

谢谢!!

c sockets linux

13
推荐指数
2
解决办法
2万
查看次数

malloc()是不可重入的但是线程安全的?

可能重复:
Malloc线程安全吗?

在阅读"Linux编程接口"时,我并不感到困惑.

从书中可以看出,malloc是不可重入的,因为它操纵全局链表数据结构,但是通过使用互斥锁使其成为线程安全的.

我对此有点困惑:因为它使用互斥锁是线程安全的,因此可以同时被多个线程调用,为什么它不是可重入函数?(如果我们说可重入意味着它可以被多个调用者同时调用)

另一个问题是,由于malloc是线程安全的,我们可以把它放在信号处理程序中吗?我认为答案是肯定的,但我不确定,因为根据本书,它说只有一个可重入或异步信号安全的函数可以放在信号处理程序中.

任何人都可以向我解释这个吗?

c linux malloc multithreading reentrancy

11
推荐指数
1
解决办法
6090
查看次数

如何更改环境变量并应用于 tmux 会话中的所有窗口

我想知道是否有任何简单的方法可以更改 bash 环境变量并应用于 tmux 会话中的 Windows?

我用谷歌搜索并没有找到解决方案,所以我在这里发布问题。

谢谢!!

tmux

7
推荐指数
2
解决办法
5035
查看次数

Linux内核中磁盘文件的I/O缓冲区缓存

我有一个关于磁盘文件的内核I/O缓存的问题.据我所知,当调用write()或read()时,内核空间中有一个缓冲区缓存用于磁盘文件I/O操作.我的问题是,这个I/O缓冲只适用于磁盘文件,还是适用于终端,FIFO,管道和套接字?

谢谢

linux linux-kernel

4
推荐指数
1
解决办法
2367
查看次数

我如何知道 x12 文档中使用什么字符集?

我正在实现一个 EDI-x12 标头解析器(仅解析“ISA”段)我注意到可以使用多个字符集。

我的问题是,我如何知道传入的 edi-x12 消息使用哪一个,以便我知道如何解释该消息?

edi x12

3
推荐指数
1
解决办法
4031
查看次数

这段代码不是线程安全的,不是吗?

我看到了一段这样的代码,并想知道这是否是线程安全的:

int savedErrno = errno;

//call some function that may modifies errno

if (errno == xxx)
   foo();

errno = savedErrno;
Run Code Online (Sandbox Code Playgroud)

我不认为这是线程安全的,我是否正确?

但我看到人们写这样的代码,所以我不确定......

任何人都可以帮我澄清一下,谢谢......

c c++ linux errno thread-safety

2
推荐指数
1
解决办法
318
查看次数

为什么write()在写入时删除文件时不会失败?

我有一个问题,为什么在从shell中删除目标文件后,write()系统调用仍然成功写入了什么?

当我在前几次成功写入后删除文件时,我希望看到write()失败,但它没有,我不知道它写在哪里.

谁能向我解释一下,谢谢!

这是我的测试示例代码:

int fd = open ("./test.txt", O_CREAT | O_RDWR | O_APPEND, 0666);
if (fd == -1)
    error_and_exit ("open() failed");

ssize_t written = 0;
char buf[] = "apple\n";

while (true)
{
    printf ("perform write...\n");
    written = write (fd, buf, sizeof(buf));
    if (written <= 0)
        error_and_exit ("write failed");
    printf ("=> wrote %d bytes\n", written);
    printf ("sleep %d...\n\n", SLEEP_TIME);
    sleep (SLEEP_TIME);
}
Run Code Online (Sandbox Code Playgroud)

c linux

2
推荐指数
1
解决办法
191
查看次数

控制台输出未对齐

我的嵌入式系统有一个后台程序,可以为控制台生成一些输出消息.当它没有完成时,登录程序启动并提示登录字符串到同一个控制台.

我的问题是,当登录提示字符串出来时,后台程序生成的输出消息不是这样对齐的:


Embedded System login: msg_line1...
                                   msg_line2...
                                               msg_line3...
Run Code Online (Sandbox Code Playgroud)

预期产量应为:


Embedded System login: msg_line1...
msg_line2...
msg_line3...
msg_line4...
Run Code Online (Sandbox Code Playgroud)

不知道如何解决问题......任何人都可以帮忙吗?

谢谢!!

c linux embedded bash embedded-linux

0
推荐指数
1
解决办法
483
查看次数