小编Jen*_*edt的帖子

POSIX系统上的Zombie Threads

如何在C/C++中形成僵尸线程,为了防止它们被创建,您需要做些什么?我知道他们只是正常的线程没有正确终止,但我对细节有点模糊.

multithreading posix

5
推荐指数
2
解决办法
8092
查看次数

C:这个宏是什么意思?

您如何阅读此宏的第二行?在这种情况下,(类型*)0是什么意思?

#define container_of(ptr, type, member) ({ \
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})
Run Code Online (Sandbox Code Playgroud)

c macros gcc

5
推荐指数
2
解决办法
1425
查看次数

声明为`extern"C"`的函数的局限性?C++功能仍然可用?

是否extern "C"做更多的事情,除了指定的标识符不应该被错位?

C++功能是否已在声明为的函数中可用extern "C"

c c++ language-features extern

5
推荐指数
1
解决办法
424
查看次数

获取Linux内核空间支持的最大CPU频率

我发现 clk_get_rate() 返回当前频率,但是有没有任何函数或方法可以找出 Linux 内核空间支持的最大频率?

linux cpu kernel frequency

5
推荐指数
1
解决办法
430
查看次数

为什么'htons`和`ntohs`都存在?

我不确定为什么htons,ntohs两者都存在于标准库中.他们做同样的事情 - 除非我以某种方式感到困惑!

这同样适用于htonlntohl.

c posix endianness

5
推荐指数
2
解决办法
2174
查看次数

如何在C中使用Gstreamer在视频流上覆盖图片?

我想在使用Gstreamer的IP摄像机流上覆盖“ .png”图片。适用于我的硬件的工作管道是:

gst-launch-1.0 
rtspsrc location=rtsp://user:pass@IP:port/channel latency=400 ! rtph264depay ! 
vpudec use-vpu-memory=false ! imxvideoconvert_ipu 
! video/x-raw,format=I420 ! gdkpixbufoverlay 
location=/home/user/folder/image.png offset-x=100 offset-y=100 ! overlaysink
Run Code Online (Sandbox Code Playgroud)

当我尝试用C转换此管道时,问题就来了。我为此管道编写的代码运行了,但是显示器上没有视频播放。在将管道设置为“播放”状态之前,播放器会卡住自己。这里是我的C实现的一个简单版本:

#include <gst/gst.h>
#include <glib.h>
#include <iostream>

typedef struct _CustomData {
  GstElement *source;
  GstElement *rtp;
  GstElement *sink;
  GstElement *vpudec;
  GstElement *converter, *gdkpixbufoverlay, *capsfilter ;
  GstBus *bus;
  GstElement    *pipeline;
  GMainLoop     *loop;
} CustomData;


static gboolean bus_call (GstBus *bus,
      GstMessage *msg,
      gpointer    data)
{
  GMainLoop *loop = (GMainLoop *) data;

  switch (GST_MESSAGE_TYPE (msg)) {
case GST_MESSAGE_EOS:{
  g_print ("End of stream\n"); …
Run Code Online (Sandbox Code Playgroud)

overlay gstreamer

5
推荐指数
1
解决办法
1151
查看次数

本地变量声明放置所需的Microsoft C/C++编译器开关

我正在使用Microsoft C/C++编译一些C文件,并且它抱怨在块中声明局部变量.当然,在块的开头声明它们是好的.我可以用什么编译器开关来抑制我得到的错误?

非常感激,

短剑的一种

c windows compiler-construction variables declaration

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

为什么这些C结构定义会发出警告和错误?

为什么这两个结构定义编译正常:

struct foo {
    int a;
} __attribute__((packed));

typedef struct __attribute__((packed)) {
    int a;
} bar;
Run Code Online (Sandbox Code Playgroud)

虽然这个发出警告:

typedef struct {
    int a;
} baz __attribute__((packed));


warning: ‘packed’ attribute ignored [-Wattributes]
Run Code Online (Sandbox Code Playgroud)

这一个给出了错误和警告:

typedef struct qux __attribute__((packed)) {
    int a;
} qux;

error: expected identifier or ‘(’ before ‘{’ token
warning: data definition has no type or storage class [enabled by default]
Run Code Online (Sandbox Code Playgroud)

作为新手C程序员,最后两个定义不起作用的事实似乎是语言设计者/编译器编写者的一个相当随意的选择.是否有一个原因?我正在使用gcc 4.7.3.

c gcc struct

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

在Linux"哪个来源"什么都不返回?

我想source在一些shell脚本c使用exec().

什么是source?是一个binary executable还是一个shell script?我在哪里可以找到linux文件系统?

我跑了

charan@PC-113:~$ which source 

charan@PC-113:~$
Run Code Online (Sandbox Code Playgroud)

c linux shell system-calls

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

C中的原子交换

我想我在这里遗漏了一些明显的东西.我有这样的代码:

int *a = <some_address>;
int *b = <another_address>;
[...]
int *tmp = a;
a = b; b = tmp;
Run Code Online (Sandbox Code Playgroud)

我想原子地这样做.我一直__c11_atomic_exchange在OSX上查看OSAtomic方法,但似乎没有任何东西可以原子地执行直接交换.他们都可以原子地将值写入2个变量中的1个,但不能同时写入两个变量.

有任何想法吗?

c macos atomic c11

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