[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Noob libssh question
[Thread Prev] | [Thread Next]
- Subject: Noob libssh question
- From: craig and heather <calhjh@xxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Thu, 6 Feb 2014 15:49:22 -0700
- To: libssh@xxxxxxxxxx
Hello,
I am using libssl to execute simple C programs between raspberry pi's.
These programs are simple SDL graphics applications similar to that listed
below that don't write anything to stderr (unless there is an error) or
stdout.
I am also doing some remote file creation and deletion using the same
libssl functionality.
When I remotely execute commands such as "touch runfile" or "rm runfile" I
can see 0 bytes are returned from ssh_channel_read function as would be
expected. However whenever I run one of my little C programs
ssh_channel_read always returns -2 but the program runs successfully on the
remote system.
Is there something I need to do in my C programs to satisfy
ssh_channel_read?
Thanks for looking
/*
* A Smart Screen Module
*
* Sets the entire screen to a specified RGB color
* Typical Call:
* colorscreen 0 255 0
*
* Concept and Implementation by: Craig A. Lindley
* Last Update: 01/30/2014
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include "SDL/SDL.h"
#define RUN_FILE_NAME "runfile"
#define BUSY_FILE_NAME "busy"
// Check for file existance
int file_exists(char *filename) {
struct stat buffer;
return (stat (filename, &buffer) == 0);
}
int main (int argc, char* args[]) {
if (argc != 4) {
fprintf(stderr, "Wrong number of arguments\n");
return -1;
}
// Extract RGB values from the command line arguments
int red = atoi(args[1]);
int green = atoi(args[2]);
int blue = atoi(args[3]);
// Range check the specified color values
if ((red < 0) || (red > 255) ||
(green < 0) || (green > 255) ||
(blue < 0) || (blue > 255)) {
fprintf(stderr, "Color values in range 0 <= value < 256\n");
return -1;
}
// Create the busy file
FILE *pFile = fopen (BUSY_FILE_NAME,"w");
if (pFile != NULL) {
fclose(pFile);
} else {
fprintf(stderr, "Could not create busy file\n");
return -1;
}
putenv("SDL_FBDEV=/dev/fb1");
putenv("SDL_VIDEODRIVER=fbcon");
// Start SDL
SDL_Init(SDL_INIT_VIDEO);
// Turn off cursor
SDL_ShowCursor(SDL_DISABLE);
const SDL_VideoInfo *videoInfo = SDL_GetVideoInfo();
int width = videoInfo->current_w;
int height = videoInfo->current_h;
uint8_t bpp = videoInfo->vfmt->BitsPerPixel;
// Set up screen
SDL_Surface *screen = SDL_SetVideoMode(width, height, bpp,
SDL_SWSURFACE);
if (!screen) {
fprintf(stderr, "SDL_SetVideoMode failed\n");
return -1;
}
// Create the specified color
uint32_t color = SDL_MapRGB(screen->format, red, green, blue);
// Create rect the size of the screen
SDL_Rect rect = {0, 0, width, height};
// Fill the screen with the specified color
SDL_FillRect(screen, &rect, color);
// Update Screen
SDL_Flip(screen);
// Pause
SDL_Delay(1000);
// Wait until runfile is gone to terminate
while (file_exists(RUN_FILE_NAME)) {
SDL_Delay(50);
}
// Delete the busy file
if (remove(BUSY_FILE_NAME) != 0) {
fprintf(stderr, "Error deleting busy file\n");
}
// Quit SDL
SDL_Quit();
return 0;
}
--
Craig Lindley
If you're one in a million, there are now seven thousand people exactly
like you.
| Re: Noob libssh question | craig and heather <calhjh@xxxxxxxxx> |
| Re: Noob libssh question | craig and heather <calhjh@xxxxxxxxx> |
| Re: Noob libssh question | craig and heather <calhjh@xxxxxxxxx> |
| Re: Noob libssh question | craig and heather <calhjh@xxxxxxxxx> |
| Re: Noob libssh question | craig and heather <calhjh@xxxxxxxxx> |