我有一个bash脚本:
echo " enter file name "
read $file
if [ -f "$file" ] && [ -s "$file" ]
then
echo " file does not exist, or is empty "
else
echo " file exists and is not empty "
fi
Run Code Online (Sandbox Code Playgroud)
无论我输入什么$file,它都给了我错误的价值.我甚至可以输入一个甚至不存在的文件,它仍然会给我错误的价值.为什么那些家伙?提前致谢
我有这个小的protobuf代码(简化,只包含必要的):
message ParamsMessage {
required int32 temperature = 1;
}
message MasterMessage {
enum Type { GETPARAMS = 1; SENDPARAMS = 2;}
required Type type = 1;
optional ParamsMessage paramsMessage = 2;
}
Run Code Online (Sandbox Code Playgroud)
我现在以下列方式创建一个MasterMessage:
ParamsMessage * params = new ParamsMessage();
params->set_temperature(22);
MasterMessage master;
master.set_type(MasterMessage::SENDPARAMS);
master.set_allocated_paramsmessage(params);
Run Code Online (Sandbox Code Playgroud)
问题是:我是否必须(在处理消息后)删除params消息,或者将protobuf删除给我?我在文档中找不到任何内容.
我想在显示器上绘制像素,这些像素在某些参数后经常变化.EG如果红色和绿色像素发生碰撞,它们都会消失,等等.
在每一帧中,我必须操纵大约100-1000像素.我这里有一个多线程的方法,它不会给我30FPS(我想要的).目前我在RAM中存储了一个像素阵列,其中包含所有像素并且具有SDL_Surface.当数组中的像素发生变化时,它也会在Surface中发生变化,然后在完成所有操作后,会对屏幕进行blitting.我目前的做法太慢了,我对如何提高速度做了一些思考.
我目前的想法是:
SDL_Surface或SDL_Texture关于如何以快速方式操作像素,还有其他方法吗?
我试图在登录屏幕上使用OSX通过命令行枚举屏幕(使用ssh).
但两者[NSScreen screens]并CGGetActiveDisplays都返回0屏幕.还有另一种屏幕枚举方法吗?
我使用DBus与logind进行通信以获取有关活动会话的信息等.我已经使用了创建代码gdbus-codegen.我可以使用call和get方法获取信息,但我没有收到通知(我有一个g_main_loop正在运行!).
我像这样创建会话对象:
GError *error;
session_ = ::login1_session_proxy_new_for_bus_sync(G_BUS_TYPE_SYSTEM,
G_DBUS_PROXY_FLAGS_NONE,
"org.freedesktop.login1",
object_path,
NULL,
&error);
Run Code Online (Sandbox Code Playgroud)
使用object_path上述路径并使用调试器进行验证.
我不知道这是否与未收到通知的问题有关.
我注册了这样的回调:
::g_signal_connect_data(proxy, "notify::active", G_CALLBACK(&cb_thunk), this, 0, (GConnectFlags)0);
Run Code Online (Sandbox Code Playgroud)
(我g_signal_connect_data用来设置userdata我当前的类,因为我用C++编写并使用回调thunks).
回调函数具有以下签名:
static void cb_thunk(proxy_t *proxy, first_data_t param1, second_data_t param2, gpointer userdata);
Run Code Online (Sandbox Code Playgroud)
与proxy_tbeeing定义为Login1Session(由...生成gdbus-codegen).
我在这里弄错了吗?我不明白为什么我没有得到任何关于此的通知.
通过DBus进行回调是有效的,但不是属性,只有dbus中的实际回调函数.
I have written the attached example program that uses GTK2 in conjunction with EGL and OpenGL. On my system this works fine. On the PC of friend it only will produce a black window and I cannot put my finger on why this happens. We event straces which libraries get loaded (Which are the same). My PC has a NVIDIA MX150, he has a GTX 1030, he uses Debian Strech and I use Debian buster.
I cannot put my finger …
我需要在C程序中检索用户的用户名.我知道getlogin和getlogin_r.但我的程序有一个重定向的标准输入(因为一些forks).
我面临的问题在联机帮助页中说明:
请注意,glibc不遵循POSIX规范并使用stdin而不是/ dev/tty.一个bug.(其他最新系统,如SunOS 5.8和HP-UX 11.11以及FreeBSD 4.8,都会在重定向stdin时返回登录名).
有没有其他方法可以检索用户名?
我目前正在将我的一个应用程序从 Xlib 移植到 libxcb,但在查找有关我在某个时候使用的 XInput2 扩展的信息时遇到了一些麻烦。libxcb 中是否有 XInput2 实现?如果是,我在哪里可以找到文档。
目前我在使用以下功能时遇到了麻烦:XIQueryDevice, XISelectEvents. 这些主要是我使用的功能。
也许有人可以为我指出文档或为我提供一个非常小的例子来开始。
我目前正在构建一些使用epoll. 它工作得很好,但是当文件描述符从epoll底层fd关闭时被删除时有一个通知会很好。
有没有办法在关闭后epoll立即收到通知fd?
我被迫使用 Gtk+2。所以请不要讨论切换到 3 或 4。
我需要创建类似于 Gtk3s 的东西GtkOverlay,我需要在其他小部件上绘制透明背景。
我想使用GtkFixed并将我的“普通”小部件放在那里,然后GtkEventBox在将颜色图(如果支持)设置为透明后使用 a放在顶部并连接其公开事件。
我得到了一些工作,但它没有预期的结果。它导致事件框变得半透明(如我所愿),但现在显示下方的小部件,但显示窗口下方的所有内容。
到目前为止,这是我的代码(抱歉弄乱了):
#include <gtk/gtk.h>
GtkWidget *window;
GtkWidget *button;
GtkWidget *vbox;
GtkWidget *fixed;
GtkWidget *event_overlay;
gboolean supports_alpha = FALSE;
static void screen_changed(GtkWidget *widget, GdkScreen *old_screen, gpointer userdata)
{
/* To check if the display supports alpha channels, get the colormap */
GdkScreen *screen = gtk_widget_get_screen(widget);
GdkColormap *colormap = gdk_screen_get_rgba_colormap(screen);
if (!colormap)
{
printf("Your screen does not support alpha channels!\n");
colormap = gdk_screen_get_rgb_colormap(screen);
supports_alpha = FALSE; …Run Code Online (Sandbox Code Playgroud)