use strict;
use warnings;
use base 'Catalyst::Controller';
-use YAML;
-sub fork : Local {
+eval 'use YAML';
+
+sub system : Local {
my ($self, $c, $ls) = @_;
my ($result, $code) = (undef, 1);
if(!-e $ls || !-x _){
- $result = 'skip';
- $code = 0;
+ $result = 'skip';
}
else {
- $result = system($ls, $ls, $ls) || $!;
- $code = $?;
+ $result = system($ls, $ls, $ls);
+ $result = $! if $result != 0;
}
- $c->response->body(Dump({result => $result, code => $code}));
+ $c->response->body(Dump({result => $result}));
}
sub backticks : Local {
my ($result, $code) = (undef, 1);
if(!-e $ls || !-x _){
- $result = 'skip';
- $code = 0;
+ $result = 'skip';
+ $code = 0;
}
else {
- $result = `$ls $ls $ls` || $!;
- $code = $?;
+ $result = `$ls $ls $ls` || $!;
+ $code = $?;
}
$c->response->body(Dump({result => $result, code => $code}));
}
-
+
+sub fork : Local {
+ my ($self, $c) = @_;
+ my $pid;
+ my $x = 0;
+
+ if($pid = fork()){
+ $x = "ok";
+ }
+ else {
+ exit(0);
+ }
+
+ waitpid $pid,0 or die;
+
+ $c->response->body(Dump({pid => $pid, result => $x}));
+}
+
1;